package com.abner.test;

/**
 * 子类
 * @author abner
 */
public class Son extends Father {

    /**
     * main方法里面的类会先初始化,但是由于他有父亲所以父亲会初始化
     * 静态变量和静态代码块谁在前先执行谁,只执行一次
     * 实例化字类的时候会先调用父类  谁在前先调用谁
     *             父类       test() 根据多态子类重写的父类的非静态方法 所以此时调用的是子类方法
     *                       非静态代码块
     *                       无参构造
     *             子类       test()
     *                        非静态代码块
     *                       无参构造
     *  静态方法不会被重写所以调用的还是父类的
     * @param args
     */
    public static void main(String[] args) {

        // 测试子类和父类方法谁先执行
        Son son = new Son();
        System.out.println();
        Son son1 = new Son();
    }

    private int i = test();

    private static int j = method();

    static {
        System.out.println("(6)");
    }

    Son() {
        super();
        System.out.println("(7)");
    }

    {
        System.out.println("(8)");
    }

    @Override
    public int test(){
        System.out.println("(9)");
        return 1;
    }

    public static int method() {
        System.out.println("(10)");
        return 1;
    }
}
